package com.springboot.ww.platform.pd.order.api;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 描述：
 *
 * @author 🧑 ‍wanwei
 * @since 2024-05-23 15:13
 */
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class PdListingResp implements Serializable {

    @JsonProperty("result")
    private ResultBean result;
    @JsonProperty("success")
    private boolean success;
    @JsonProperty("requestId")
    private String requestId;
    @JsonProperty("errorCode")
    private int errorCode;
    @JsonProperty("errorMsg")
    private String errorMsg;

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    public static class ResultBean implements Serializable {
        @JsonProperty("totalCount")
        private int totalCount;
        @JsonProperty("data")
        private List<DataBean> data;

        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        public static class DataBean implements Serializable {
            @JsonProperty("productId")
            private String productId;
            @JsonProperty("productJitMode")
            private ProductJitModeBean productJitMode;
            @JsonProperty("productName")
            private String productName;
            @JsonProperty("productSemiManaged")
            private ProductSemiManagedBean productSemiManaged;
            @JsonProperty("createdAt")
            private long createdAt;
            @JsonProperty("isSupportPersonalization")
            private boolean isSupportPersonalization;
            @JsonProperty("extCode")
            private String extCode;
            @JsonProperty("leafCat")
            private LeafCatBean leafCat;
            @JsonProperty("categories")
            private CategoriesBean categories;
            @JsonProperty("productSkcId")
            private String productSkcId;
            @JsonProperty("matchSkcJitMode")
            private boolean matchSkcJitMode;
            @JsonProperty("mainImageUrl")
            private String mainImageUrl;
            @JsonProperty("productSkuSummaries")
            private List<ProductSkuSummariesBean> productSkuSummaries;

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class ProductJitModeBean implements Serializable {
                @JsonProperty("quickSellAgtSignStatus")
                private Object quickSellAgtSignStatus;
                @JsonProperty("matchJitMode")
                private boolean matchJitMode;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class ProductSemiManagedBean implements Serializable {
                @JsonProperty("bindSites")
                private List<BindSitesBean> bindSites;

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class BindSitesBean implements Serializable {
                    @JsonProperty("siteId")
                    private int siteId;
                    @JsonProperty("siteName")
                    private String siteName;
                }
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class LeafCatBean implements Serializable {
                @JsonProperty("catId")
                private int catId;
                @JsonProperty("catName")
                private String catName;
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class CategoriesBean implements Serializable {
                @JsonProperty("cat8")
                private Cat8Bean cat8;
                @JsonProperty("cat9")
                private Cat9Bean cat9;
                @JsonProperty("cat6")
                private Cat6Bean cat6;
                @JsonProperty("cat7")
                private Cat7Bean cat7;
                @JsonProperty("cat4")
                private Cat4Bean cat4;
                @JsonProperty("cat5")
                private Cat5Bean cat5;
                @JsonProperty("cat2")
                private Cat2Bean cat2;
                @JsonProperty("cat3")
                private Cat3Bean cat3;
                @JsonProperty("cat10")
                private Cat10Bean cat10;
                @JsonProperty("cat1")
                private Cat1Bean cat1;
                @JsonProperty("leafCat")
                private Object leafCat;

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat8Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat9Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat6Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat7Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat4Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat5Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat2Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat3Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat10Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class Cat1Bean implements Serializable {
                    @JsonProperty("catId")
                    private int catId;
                    @JsonProperty("catName")
                    private String catName;
                }
            }

            @JsonIgnoreProperties(ignoreUnknown = true)
            @Data
            public static class ProductSkuSummariesBean implements Serializable {
                @JsonProperty("productSkuId")
                private String productSkuId;
                @JsonProperty("extCode")
                private String extCode;
                @JsonProperty("productSkuWhExtAttr")
                private ProductSkuWhExtAttrBean productSkuWhExtAttr;
                @JsonProperty("virtualStock")
                private int virtualStock;
                @JsonProperty("productSkuSpecList")
                private List<ProductSkuSpecListBean> productSkuSpecList;

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuWhExtAttrBean implements Serializable {
                    @JsonProperty("productSkuWeight")
                    private ProductSkuWeightBean productSkuWeight;
                    @JsonProperty("productSkuWmsVolume")
                    private Object productSkuWmsVolume;
                    @JsonProperty("productSkuSubSellMode")
                    private Object productSkuSubSellMode;
                    @JsonProperty("productSkuSensitiveAttr")
                    private ProductSkuSensitiveAttrBean productSkuSensitiveAttr;
                    @JsonProperty("productSkuFragileLabels")
                    private Object productSkuFragileLabels;
                    @JsonProperty("productSkuNewSensitiveAttr")
                    private ProductSkuNewSensitiveAttrBean productSkuNewSensitiveAttr;
                    @JsonProperty("productSkuVolumeLabel")
                    private Object productSkuVolumeLabel;
                    @JsonProperty("productSkuWmsWeight")
                    private Object productSkuWmsWeight;
                    @JsonProperty("productSkuVolume")
                    private ProductSkuVolumeBean productSkuVolume;
                    @JsonProperty("productSkuSensitiveLimit")
                    private ProductSkuSensitiveLimitBean productSkuSensitiveLimit;
                    @JsonProperty("productSkuWmsVolumeLabel")
                    private Object productSkuWmsVolumeLabel;
                    @JsonProperty("productSkuBarCodes")
                    private List<?> productSkuBarCodes;

                    @JsonIgnoreProperties(ignoreUnknown = true)
                    @Data
                    public static class ProductSkuWeightBean implements Serializable {
                        @JsonProperty("value")
                        private int value;
                    }

                    @JsonIgnoreProperties(ignoreUnknown = true)
                    @Data
                    public static class ProductSkuSensitiveAttrBean implements Serializable {
                        @JsonProperty("isSensitive")
                        private Object isSensitive;
                        @JsonProperty("sensitiveTypes")
                        private List<?> sensitiveTypes;
                    }

                    @JsonIgnoreProperties(ignoreUnknown = true)
                    @Data
                    public static class ProductSkuNewSensitiveAttrBean implements Serializable {
                        @JsonProperty("force2NormalTypes")
                        private Object force2NormalTypes;
                        @JsonProperty("isForce2Normal")
                        private boolean isForce2Normal;
                        @JsonProperty("sensitiveList")
                        private List<?> sensitiveList;
                    }

                    @JsonIgnoreProperties(ignoreUnknown = true)
                    @Data
                    public static class ProductSkuVolumeBean implements Serializable {
                        @JsonProperty("len")
                        private int len;
                        @JsonProperty("width")
                        private int width;
                        @JsonProperty("height")
                        private int height;
                    }

                    @JsonIgnoreProperties(ignoreUnknown = true)
                    @Data
                    public static class ProductSkuSensitiveLimitBean implements Serializable {
                        @JsonProperty("maxBatteryCapacityHp")
                        private Object maxBatteryCapacityHp;
                        @JsonProperty("maxBatteryCapacity")
                        private Object maxBatteryCapacity;
                        @JsonProperty("maxLiquidCapacity")
                        private Object maxLiquidCapacity;
                        @JsonProperty("maxLiquidCapacityHp")
                        private Object maxLiquidCapacityHp;
                        @JsonProperty("maxKnifeLength")
                        private Object maxKnifeLength;
                        @JsonProperty("maxKnifeLengthHp")
                        private Object maxKnifeLengthHp;
                    }
                }

                @JsonIgnoreProperties(ignoreUnknown = true)
                @Data
                public static class ProductSkuSpecListBean implements Serializable {
                    @JsonProperty("specId")
                    private int specId;
                    @JsonProperty("parentSpecName")
                    private String parentSpecName;
                    @JsonProperty("specName")
                    private String specName;
                    @JsonProperty("parentSpecId")
                    private int parentSpecId;
                }
            }
        }
    }
}
